home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Revolution - Das Atari CD Magazin 1997
/
Revolution - Das Atari CD Magazin 1.iso
/
software
/
anwendng
/
utility
/
gemlabel
/
module.prj
/
stc.ltc
/
modul.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-07-21
|
8KB
|
312 lines
/*
Dies ist der Startupcode für ein GEMLABEL-Modul in C !
Er wurde für LATTICE C 5.6 erstellt, sollte aber auf
allen anderen Compilern auch laufen
Mit diesem Startupcode können Load-/Save-/Print- oder
Draw-Module für GEMLABEL 1.XX erstellt werden
Angefangen : 14.04.1995
Letzte Änderung: 01.05.1995
*/
/*
INCLUDE-Dateien
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <basepage.h>
#include <aes.h>
#include <vdi.h>
#include "glm.h"
/*
Hier steht der Modultyp (GLOAD/GSAVE/GDRAW/GPRTR)
*/
#define MODUL GDRAW
/*
Globale Variablen
*/
char com[200];
int i,ret,ap_id;
short work_in[11]={ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 };
short work_out[57];
short handel;
/*
Basepagepointer für den Zugriff auf die
Kommandozeile
*/
extern BASEPAGE *_pbase;
/*
Bei Load/Save-Modul Platz für Dateinamen
*/
#if (( MODUL == GSAVE ) || ( MODUL == GLOAD ))
char mfile[200];
#endif
/*
Bei Draw-Modulen: Clipping-Koordinaten
*/
#if ( MODUL == GDRAW )
struct ckor__
{
int x;
int y;
int w;
int h;
}clipping;
short pxarray[4];
#endif
/*
Ersetzen Sie Modulbeschreibung durch ihren Modulnamen,
der später von GEMLABEL angezeigt werden soll.
Die Modulbeschreibung darf nicht länger als 40 Zeichen sein
und muß mit '¯' abgeschlossen sein
*/
#if ( MODUL == GLOAD )
char modulname[]="GLBLMODLLOAD Modulbeschreibung¯";
#endif
#if ( MODUL == GSAVE )
char modulname[]="GLBLMODLSAVE Modulbeschreibung¯";
#endif
#if ( MODUL == GPRTR )
char modulname[]="GLBLMODLPRTR Modulbeschreibung¯";
#endif
#if ( MODUL == GDRAW )
char modulname[]="GLBLMODLDRAW Modulbeschreibung¯";
#endif
/*
Funktionsprototypen
*/
void glm_mod(void);
void tmodul(char);
void modul (void);
void wmodul(void);
int main(int argc, char *argv[], char *envp[] )
{
register int i;
char *clm_lin, *glmver;
clm_lin = _pbase->p_cmdlin;
if ( *clm_lin > 0)
{
clm_lin++;
for ( i=0 ; i < 128 ; i++ , clm_lin++ )
{
com[i] = *clm_lin;
}
if (( com[0] == 0x47 ) && ( com[1] == 0x4c ) && ( com[2] == 0x4d )
#if ( MODUL == GDRAW )
&& ( argc >= 4) ) /* Diese Bedingung trifft nur bei Draw-Modulen zu */
#else
) /* Bei anderen Modulen wird Sie nicht benötigt */
#endif
{
/*
Bei Load/Save-Modulen Dateinamen ermitteln
*/
#if ( (MODUL == GLOAD ) || (MODUL == GSAVE) )
strcpy( mfile , &com[4] );
#endif
/*
Bei Draw-Modulen Clipping-Koordinaten ermitteln
*/
#if ( MODUL == GDRAW )
/*
Clipping-Koordinaten aus der Kommandozeile auslesen
*/
clipping.x=atoi( argv[2] );
clipping.y=atoi( argv[3] );
clipping.w=atoi( argv[4] );
clipping.h=atoi( argv[5] );
#endif
tmodul( com [3] );
/*
So können Sie bei Bedarf die GEMLABEL-Versionsnummer
ermitteln ( Inhalt der Environment-Variable GLMVER )
(Evt. wichtig für Versionsabfragen)
*/
glmver = getenv("GLMVER");
if ( glmver == NULL )
printf(" Keine GLMVER-Environment-Variable\n");
else
printf(" GEMLABEL Version %s\n",glmver);
/*
Umwandeln in int : atoi( glmver );
Umwandeln in long : atol( glmver );
Der Programmstatus (Freeware/Shareware) geht
dabei verloren
*/
#if ( MODUL == GDRAW )
/*
Die Clipping-Koordinaten können von GEMLABEL
auch im Environment übergeben werden
( nur Draw-Module ! )
Fehlen diese, ist man auf die Werte in der
Kommandozeile angewiesen
*/
glmver = getenv("GXCLIP");
if ( glmver == NULL )
printf(" Keine Clipping-X-Koordinaten im Environment ! \n");
else
printf(" Clipping-X im Env.: %s\n",glmver);glmver = getenv("GWCLIP");
glmver = getenv("GYCLIP");
if ( glmver == NULL )
printf(" Keine Clipping-Y-Koordinaten im Environment ! \n");
else
printf(" Clipping-Y im Env.: %s\n",glmver);
glmver = getenv("GWCLIP");
if ( glmver == NULL )
printf(" Keine Clipping-W-Koordinaten im Environment ! \n");
else
printf(" Clipping Breite im Env.: %s\n",glmver);
glmver = getenv("GHCLIP");
if ( glmver == NULL )
printf(" Keine Clipping-H-Koordinaten im Environment ! \n");
else
printf(" Clipping Höhe im Env.: %s\n",glmver);
#endif
}
else
glm_mod();
}
else
{
glm_mod();
}
return(0);
}
/*
In der Procedure void modul(void) steht ihr Modul
*/
void modul(void)
{
short junk;
handel = graf_handle( &junk, &junk, &junk, &junk);
v_opnvwk( work_in , &handel, work_out );
if ( handel ) /* Nur weitermachen, wenn wir ein VDI-Handel kriegen */
{
/*
*************************************************
* Hier fängt ihr Modul an *
* Es ist bei der AES und beim VDI angemeldet *
* AES-Handel: int ap_id *
* VDI-Handel: short handel *
*************************************************
Damit hier etwas steht, geben wir eine Meldung aus
*/
printf(" Hier steht das Modul\n");
/*
Bei LOAD/SAVE-Modulen wird noch der Dateiname angezeigt
*/
#if (( MODUL == GLOAD ) || ( MODUL == GSAVE ) )
printf(" Dateiname: %s\n",mfile);
#endif
/*
Bei Draw-Modulen Clipping zeigen wir das Clipping an
*/
#if ( MODUL == GDRAW )
printf(" Clipping:\n");
printf(" X: %d\n",clipping.x);
printf(" Y: %d\n",clipping.y);
printf(" W: %d\n",clipping.w);
printf(" H: %d\n",clipping.h);
/*
Und Clipping setzen
*/
pxarray[0] = clipping.x;
pxarray[1] = clipping.y;
pxarray[2] = clipping.w;
pxarray[3] = clipping.h;
vs_clip( handel, 1 , pxarray );
#endif
/*
*************************************************
* Hier hört iht Modul auf *
* Es wird beim VDI und AES abgemeldet ! *
*************************************************
*/
v_clsvwk( handel ); /* Und Handel wieder freigeben */
}
else
{
/*
Wir haben kein VDI-Handel bekommen:
Fehlermeldung
*/
form_alert(1,"[3][ | Konnte VDI-Workstation nicht | öffnen ! Kein Handel mehr frei ! ][Abbruch]");
}
}
void glm_mod(void)
{
printf("\n");
/*
Hier ihr Modulname, Version und Datum
*/
printf(" GEMLABEL-Modul in C Version 1.10 01.05.95 \n");
/*
Hier kommt ihr Name rein
*/
printf(" Written by Volker Janzen \n");
printf("\n");
printf(" Dies ist ein Modul für GEMLABEL und \n");
/*
Hier kommt ein Copyrighthinweis oder die Meldung,
daß dieses Modul FREEWARE/ SHAREWARE ist, hin
*/
printf(" Copyrighthinweis oder FREEWARE/SHAREWARE \n");
printf(" Es kann nur von GEMLABEL gestartet werden \n");
printf("\n");
printf(" GEMLABEL written 1995 by Volker Janzen \n");
printf("\n");
printf("-Taste-\n");
getch();
}
void tmodul(char t)
{
ap_id = appl_init();
if ( ap_id == -1 )
{
printf(" Fehler bei Appl_Init: Keine AES-ID ! \n");
printf("-Taste-\n");
getch();
}
else
{
if ( t == MODUL )
modul();
else
wmodul();
appl_exit();
}
}
/*
Diese Procedure wird aufgerufen, wenn dieses Modul
etwas anderes machen soll, als das, wofür es be-
stimmt ist ( Es soll z.B. speichern statt drucken )
*/
void wmodul(void)
{
char alert[200];
#if ( MODUL == GDRAW )
char modultyp[]="Draw";
#endif
#if ( MODUL == GPRTR )
char modultyp[]="Druck";
#endif
#if ( MODUL == GLOAD )
char modultyp[]="Load";
#endif
#if ( MODUL == GSAVE )
char modultyp[]="Save";
#endif
sprintf(alert,"[3][ | Dies ist ein | GEMLABEL-%s-Modul ! ][Abbruch]",modultyp);
form_alert( 1 , alert );
}